#include"head.h"

int login(int fd,process_stat_t *stat,transport_protocol_t * tp){
    //获取标准输入的账号
    //获取标准输入的密码
    transport_protocol_t temp_msg;
    bzero(&temp_msg,sizeof(temp_msg));
    temp_msg.command=1;
    char username[60];
    char password[60];
    char mode;
    char ch;
    while(1){
        printf("请输入r/l(注册/登录)\n");
        bzero(&mode,sizeof(mode));
        //清空输入缓冲区
        scanf("%c",&mode);
        while ((ch = getchar()) != '\n' && ch != EOF);
        if(mode=='r'||mode=='l'){
            //告诉服务器要登录还是要注册
        }else{
            printf("输入错误请重新输入\n");
            continue;
        }
        bzero(username,sizeof(username));
        bzero(password,sizeof(password));
        printf("请输入账号:\n");
        read(STDIN_FILENO,username,sizeof(username));
        printf("请输入密码:\n");
        read(STDIN_FILENO,password,sizeof(password));
        //send发送账号和密码
        int name_len=strlen(username);
        int pass_len=strlen(password);
        send(fd,&temp_msg,sizeof(temp_msg),0);
        send(fd,&mode,1,0);
        send(fd,&name_len,sizeof(int),0);
        send(fd,username,name_len,0);
        send(fd,&pass_len,sizeof(int),0);
        send(fd,password,pass_len,0);
        if(mode=='l'){
            int flag=-2;
            //recv等待服务端返回的消息
            recv(fd,&flag,sizeof(int),0);
            //根据消息判断以下三种情况
            //1.密码错误
            //需要重新输入密码
            //2.用户不存在
            //需要注册账号
            //3.登录成功
            //修改用户状态标记位
            if(flag==0){
                stat->flag=1;
                printf("登录成功\n");
                tp->curr_path[0]='/';
                stat->curr_path[0]='/';
                transport_protocol_t msg;
                recv(fd,&msg,sizeof(msg),0);
                memcpy(stat->local_token,msg.token,sizeof(stat->local_token));
                break;
            }else if(flag==1){
                printf("用户不存在\n");
                continue;
            }else if(flag==-1){
                printf("密码错误，请重新输入\n");
                continue;
            }
        }else if(mode=='r'){
            int ret =0;
            recv(fd,&ret,sizeof(int),0);
            if(ret == 0){
                printf("注册成功\n");
                continue;
            }else{
                printf("注册失败账号已存在\n");
                continue;
            }
        }
    }
    return 0;

}
